package com.randi.system.service.sysNotice;

import com.github.pagehelper.PageInfo;
import com.randi.common.core.domain.entity.SysUser;
import com.randi.system.domain.entity.sysNotice.SysNotice;
import com.randi.system.domain.entity.sysNotice.SysNoticePush;
import com.randi.system.domain.params.SysUserParam;

import java.util.List;

public interface ISysNoticePushService {

    /**
     * 前置处理
     *
     * @param sysNotice 公告
     */
    void checkHandle(SysNotice sysNotice);

    /**
     * 获取已推送用户列表
     *
     * @param noticeId 公告ID
     * @return 已推送用户列表
     */
    List<Long> getPushUserIds(Long noticeId);

    /**
     * 分页获取推送用户列表
     *
     * @param userParam 用户参数
     * @return 用户列表
     */
    PageInfo<SysUser> selectUserPageList(SysUserParam userParam);

    /**
     * 获取公告推送用户列表
     *
     * @param noticeId 公告ID
     * @return 用户列表
     */
    List<SysUser> selectUserList(Long noticeId);

    /**
     * 查询通告推送是否存在
     *
     * @param noticeId 通告ID
     * @param userId   用户ID
     * @return 存在/不存在
     */
    Boolean checkSysNoticePushExist(Long noticeId, Long userId);

    /**
     * 批量插入推送信息
     *
     * @param sysNoticePushes 推送信息
     * @return 结果
     */
    int batchInsertSysNoticePush(List<SysNoticePush> sysNoticePushes);

}
